package com.dn.ddns;

import com.aliyun.alidns20150109.Client;
import com.aliyun.alidns20150109.models.*;
import com.dn.MyStart;

import java.time.LocalDateTime;


/**
 * @program: ddns
 * @description: 域名解析
 * @author: DN
 * @create: 2021-04-04 11:39
 **/
public class ResolutionDNS {


    /**
     * 该方法调用阿里云接口查询你的域名所有的解析记录列表
     * @param domainName 你的域名
     * @return
     * @throws Exception
     */
    public static DescribeDomainRecordsResponse domainRecords(String domainName,
                                                              Client client) {

        try {
            DescribeDomainRecordsRequest request = new DescribeDomainRecordsRequest()
                    .setLang("zh")
                    .setDomainName(domainName);
            // 复制代码运行请自行打印 API 的返回值
            DescribeDomainRecordsResponse response = client.describeDomainRecords(request);
            return response;
        } catch (Exception e) {
            System.out.println(LocalDateTime.now().format(MyStart.formatter)+" -> ResolutionDNS -> domainRecords -> 查询域名解析记录失败!");
            e.printStackTrace();
        }
        return null;

    }


    /**
     * 该方法调用阿里云接口对指定域名解析记录进行修改
     * @param recordId 解析记录值
     * @param rr 主机记录
     * @param type 解析记录类型
     * @param value 本次解析使用的ip地址
     * @param client 请求角色
     * @return
     */
    public static UpdateDomainRecordResponse domainResolution(String recordId,
                                                              String rr,
                                                              String type,
                                                              String value,
                                                              Client client)  {
        try {
            UpdateDomainRecordRequest request = new UpdateDomainRecordRequest();
            request.setLang("zh") // 响应数据的语言
                    .setRecordId(recordId) // 解析记录的ID
                    .setRR(rr) // 主机记录
                    .setType(type) // 解析记录类型
                    .setValue(value); // 记录值,就是你的ip地址
            UpdateDomainRecordResponse response = client.updateDomainRecord(request);
            return response;
        } catch (Exception e) {
            System.out.println(LocalDateTime.now().format(MyStart.formatter)+"-> ResolutionDNS -> domainResolution -> 修改域名解析记录失败!");
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 添加一个域名解析记录
     * @param domainName 域名值
     * @param rr 主机记录
     * @param type 记录类型
     * @param value ip址
     * @param client 请求角色
     * @return
     */
    public static AddDomainRecordResponse addDomainRecord(String domainName,
                                                          String rr,
                                                          String type,
                                                          String value,
                                                          Client client) {
        AddDomainRecordRequest request = new AddDomainRecordRequest();
        request.setDomainName(domainName)
                .setRR(rr)
                .setType(type)
                .setValue(value);
        try {
            AddDomainRecordResponse response = client.addDomainRecord(request);
            return response;
        } catch (Exception e) {
            System.out.println(LocalDateTime.now().format(MyStart.formatter)+"-> ResolutionDNS -> addDomainRecord -> 添加域名解析记录失败!");
            e.printStackTrace();
        }
        return null;
    }
}
